# 中文编码
# _*_ coding: UTF8 _*_
print("你好，世界")

# 字符串， python3以Unicode编码->支持多语言

# ord()函数获取字符串的整数表示
ord('吴')

# chr()函数把编码转换为对应的字符
chr(21556)

# 知道字符的整数编码还可以直接写str
'\u5434\u658c'

# 字符串转为bytes(写入磁盘或网络传输需要str转换bytes， 读取磁盘或网络传输内容需要将bytes转换为str)
# 英文的bytes和str是相同的, bytes的每个字符只占一个字符， 'ABC'和b'ABC'内容一样但是形式不同
b'ABC'

# 可以通过encode()将字符串转换为制定编码的bytes
'ABC'.encode('ascii')
'中文'.encode('utf-8')

# 可以通过decode()将字符串按指定编码解码
b'\xe5\x90\xb4\xe6\x96\x8c'.decode('utf-8')

# errors='ignore'忽略错误字节
b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')

# 计算字符串的字符长度(传入str)
len('ABC') # 3
len('中文') # 2

# 计算字符串的字节长度(传入bytes)
len(b'ABC') # 3
len(b'\xe5\x90\xb4\xe6\x96\x8c')
len('吴斌'.encode('utf-8'))

# 格式化
# %d 替换整数; %f 替换浮点数; %s 替换字符串; %x 替换16进制数
'Hi, %s, you have $%d.' % ('Michael', 1000000)

# 格式化还可以指定是否补0和小数位
'%2d-%02d' % (3, 1) # ' 3-01' 2d表示至少占2位，不足左边用空格补齐， 02d表示不足用0补齐
'%.2f' % 3.1415926 # '3.14' 表示占两个小数位

# 若需要转义%， 使用%%
'小明的成绩提高了%d%%' % 7

# 使用format()进行格式化， 它会用传入的参数依次替换字符串内的占位符{0}、{1}……
'hello, {0}, 您的成绩提高了{1:.1f}%'.format('小明',10.234)


# 练习
# 小明的成绩从去年的72分提升到了今年的85分，请计算小明成绩提升的百分点，并用字符串格式化显示出'xx.x%'，只保留小数点后1位：
s1 = 72
s2 = 85

r = (85-72)/72 * 100
print('小明的成绩提升了%.1f%%' % r)